package com.rs.game.minigames.clanwars;

import com.rs.game.WorldTile;

/**
 * Represents the possible area types.
 * 
 * @author Emperor
 * 
 */
public enum AreaType {

    /**
     * The classic area type.
     */
    CLASSIC_AREA(new WorldTile(2752, 5888, 0), new WorldTile(2815, 6015, 0), 35, 10, -36, -9, 56, 58, -7, -58),

    /**
     * The plateau area type.
     */
    PLATEAU(new WorldTile(2831, 5888, 0), new WorldTile(2928, 5951, 0), 59, 12, -38, -10, 27, 21, -70, -20),

    /**
     * The forsaken quarry area type.
     */
    FORSAKEN_QUARRY(new WorldTile(2880, 5504, 0), new WorldTile(2943, 5567, 0), 11, 11, -10, -10, 28, 32, -28, -30),

    /**
     * The blasted forest area type.
     */
    BLASTED_FOREST(new WorldTile(2880, 5632, 0), new WorldTile(2942, 5695, 0), 12, 9, -12, -9, 13, 29, -13, -28),

    /**
     * The turrets area type.
     */
    TURRETS(new WorldTile(2689, 5505, 0), new WorldTile(2750, 5630, 0), 42, 7, -40, -5, 2, 3, 0, -1);

    /**
     * The south west tile of the area.
     */
    private final WorldTile southWestTile;

    /**
     * The north east tile of the area.
     */
    private final WorldTile northEastTile;

    /**
     * The first team's x spawn offset.
     */
    private final int firstSpawnOffsetX;

    /**
     * The first team's y spawn offset.
     */
    private final int firstSpawnOffsetY;

    /**
     * The second team's x spawn offset.
     */
    private final int secondSpawnOffsetX;

    /**
     * The second team's y spawn offset.
     */
    private final int secondSpawnOffsetY;

    /**
     * The first team's x death offset.
     */
    private final int firstDeathOffsetX;

    /**
     * The first team's y death offset.
     */
    private final int firstDeathOffsetY;

    /**
     * The second team's x death offset.
     */
    private final int secondDeathOffsetX;

    /**
     * The second team's y death offset.
     */
    private final int secondDeathOffsetY;

    /**
     * Constructs a new {@code AreaType.java} {@code Object}.
     * 
     * @param southWestTile
     *            The south western tile.
     * @param northEastTile
     *            The north east tile.
     * @param firstSpawnOffsetX
     *            The first team's x spawn offset.
     * @param firstSpawnOffsetY
     *            The first team's y spawn offset.
     * @param secondSpawnOffsetX
     *            The second team's x spawn offset.
     * @param secondSpawnOffsetY
     *            The second team's y spawn offset.
     * @param firstDeathOffsetX
     *            The first team's x death offset.
     * @param firstDeathOffsetY
     *            The first team's y death offset.
     * @param secondDeathOffsetX
     *            The second team's x death offset.
     * @param secondDeathOffsetY
     *            The second team's y death offset.
     */
    private AreaType(WorldTile southWestTile, WorldTile northEastTile, int firstSpawnOffsetX, int firstSpawnOffsetY, int secondSpawnOffsetX, int secondSpawnOffsetY, int firstDeathOffsetX, int firstDeathOffsetY, int secondDeathOffsetX, int secondDeathOffsetY) {
	this.southWestTile = southWestTile;
	this.northEastTile = northEastTile;
	this.firstSpawnOffsetX = firstSpawnOffsetX;
	this.firstSpawnOffsetY = firstSpawnOffsetY;
	this.secondSpawnOffsetX = secondSpawnOffsetX;
	this.secondSpawnOffsetY = secondSpawnOffsetY;
	this.firstDeathOffsetX = firstDeathOffsetX;
	this.firstDeathOffsetY = firstDeathOffsetY;
	this.secondDeathOffsetX = secondDeathOffsetX;
	this.secondDeathOffsetY = secondDeathOffsetY;
    }

    /**
     * Gets the southWestTile.
     * 
     * @return The southWestTile.
     */
    public WorldTile getSouthWestTile() {
	return southWestTile;
    }

    /**
     * Gets the northEastTile.
     * 
     * @return The northEastTile.
     */
    public WorldTile getNorthEastTile() {
	return northEastTile;
    }

    /**
     * Gets the firstSpawnOffsetX.
     * 
     * @return The firstSpawnOffsetX.
     */
    public int getFirstSpawnOffsetX() {
	return firstSpawnOffsetX;
    }

    /**
     * Gets the firstSpawnOffsetY.
     * 
     * @return The firstSpawnOffsetY.
     */
    public int getFirstSpawnOffsetY() {
	return firstSpawnOffsetY;
    }

    /**
     * Gets the secondSpawnOffsetX.
     * 
     * @return The secondSpawnOffsetX.
     */
    public int getSecondSpawnOffsetX() {
	return secondSpawnOffsetX;
    }

    /**
     * Gets the secondSpawnOffsetY.
     * 
     * @return The secondSpawnOffsetY.
     */
    public int getSecondSpawnOffsetY() {
	return secondSpawnOffsetY;
    }

    /**
     * Gets the firstDeathOffsetX.
     * 
     * @return The firstDeathOffsetX.
     */
    public int getFirstDeathOffsetX() {
	return firstDeathOffsetX;
    }

    /**
     * Gets the firstDeathOffsetY.
     * 
     * @return The firstDeathOffsetY.
     */
    public int getFirstDeathOffsetY() {
	return firstDeathOffsetY;
    }

    /**
     * Gets the secondDeathOffsetX.
     * 
     * @return The secondDeathOffsetX.
     */
    public int getSecondDeathOffsetX() {
	return secondDeathOffsetX;
    }

    /**
     * Gets the secondDeathOffsetY.
     * 
     * @return The secondDeathOffsetY.
     */
    public int getSecondDeathOffsetY() {
	return secondDeathOffsetY;
    }
}